﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Windows.Input;

namespace JasRibbonApplicatie.Classes
{
    // klasse om de cursor te veranderen voor de hele applicatie
    // (bvb. om een wacht-cursor weer te geven tijdens operatie...)
    public class OverrideCursor : IDisposable
    {
        static Stack<Cursor> s_Stack = new Stack<Cursor>();

        public OverrideCursor(Cursor changeToCursor)
        {
            s_Stack.Push(changeToCursor);

            if (Mouse.OverrideCursor != changeToCursor)
                Mouse.OverrideCursor = changeToCursor;
        }

        public void Dispose()
        {
            s_Stack.Pop();

            Cursor cursor = s_Stack.Count > 0 ? s_Stack.Peek() : null;

            if (cursor != Mouse.OverrideCursor)
                Mouse.OverrideCursor = cursor;
        }

    }

    /*
     * Voorbeeld gebruik van deze klasse
     * zie ook: http://stackoverflow.com/questions/307004/changing-the-cursor-in-wpf-sometimes-works-sometimes-doesnt
     * => in using steek je het werk dat lang duurt
     * 
     * using (OverrideCursor cursor = new OverrideCursor(Cursors.Wait))
     * {
     * // Do work...
     * }
    */


}
